# 作者: 菅世博
# 2025年02月16日21时59分27秒
# 512326042@qq.com

# 变量定义
def use_var():
    integer_var = 42  # 整数类型
    float_var = 3.14  # 浮点数类型
    string_var = 'Hello, Python!'  # 字符串类型
    list_var = [1, 2, 3, 'a', 'b']  # 列表类型
    tuple_var = (1, 2, 3, 'a', 'b')  # 元组类型
    dict_var = {'name': 'Alice', 'age': 25}  # 字典类型
    bool_var = True  # 布尔类型

    print('整数变量: ', integer_var, '类型: ', type(integer_var))
    print('浮点数变量: ', float_var, '类型: ', type(float_var))
    print('字符串变量: ', string_var, '类型: ', type(string_var))
    print('列表变量: ', list_var, '类型: ', type(list_var))
    print('元组变量: ', tuple_var, '类型: ', type(tuple_var))
    print('字典变量: ', dict_var, '类型: ', type(dict_var))
    print('布尔变量: ', bool_var, '类型: ', type(bool_var))


# 进制转换
def use_decimal():
    a = 123
    print(bin(a))  # 功能 将整型转换为二进制
    print(hex(a))  # 功能 将整型转换为十六进制
    print(oct(a))  # 功能 将整型转换为八进制


# 1-100奇数求和

def use_sum100():
    i = 1
    result = 0
    while i <= 100:
        if i % 2 == 0:  # 如果i是奇数
            i += 1  # 跳过奇数，继续下一个
            continue
        result += i  # 如果i是偶数，加到result中
        i += 1  # 确保每次循环后i都会递增
    print(f'result = {result}')


# 修改
def sum100():
    """
    列表生成式  1-100奇数求和
    :return:
    """
    print(sum([x for x in range(1, 101) if x % 2 == 1]))


# 打印九九乘法表

def use_multiplication():
    for i in range(1, 10):
        for j in range(1, i + 1):
            print(f"{j}×{i}={i * j}", end=" ")  # 打印乘法表达式
        print()  # 每打印完一行后换行


# 修改
def multiplication():
    """
    九九乘法表
    :return:
    """
    for i in range(1, 10):
        for j in range(1, i + 1):
            print(f"{j}×{i}={i * j:<2d}", end=" ")  # 使用:<2d格式化左对齐输出
        print()


# 二进制中1的个数

def use_bit():
    n = int(input('请输入'))
    result = 0
    for i in range(64):
        result += (n >> i) & 1
    print(result)


# 修改
def bit1():
    """
    二进制中1的个数(解法一)
    :return:
    """
    n = int(input('请输入'))
    if n >= 0:
        print(bin(n).count('1'))
    else:
        print(64 - bin(~n).count('1'))


def bit2():
    """
    二进制中1的个数(解法二)
    :return:
    """
    n = int(input('请输入'))
    check_flag = 1
    count = 0
    for i in range(64):
        if n & check_flag:
            count += 1
        check_flag <<= 1
    print(count)


# use_bit()
# use_multiplication()
# use_sum100()
# use_decimal()
# use_var()


# sum100()
# multiplication()
# bit1()
bit2()